Merge branch '1087-webhook-response' of https://github.com/amokan/huginn into amokan-1087-webhook-response

Andrew Cantino 8 years ago
parent
commit
c80366a981
2 changed files with 22 additions and 2 deletions
  1. 8 2
      app/models/agents/webhook_agent.rb
  2. 14 0
      spec/models/agents/webhook_agent_spec.rb

+ 8 - 2
app/models/agents/webhook_agent.rb

@@ -23,6 +23,7 @@ module Agents
23 23
         * `verbs` - Comma-separated list of http verbs your agent will accept.
24 24
           For example, "post,get" will enable POST and GET requests. Defaults
25 25
           to "post".
26
+        * `response` - The response message to the request. Defaults to 'Event Created'.
26 27
       MD
27 28
     end
28 29
 
@@ -36,7 +37,8 @@ module Agents
36 37
     def default_options
37 38
       { "secret" => "supersecretstring",
38 39
         "expected_receive_period_in_days" => 1,
39
-        "payload_path" => "some_key"
40
+        "payload_path" => "some_key",
41
+        "response" => "Event Created"
40 42
       }
41 43
     end
42 44
 
@@ -53,7 +55,7 @@ module Agents
53 55
         create_event(payload: payload)
54 56
       end
55 57
 
56
-      ['Event Created', 201]
58
+      [response_message, 201]
57 59
     end
58 60
 
59 61
     def working?
@@ -69,5 +71,9 @@ module Agents
69 71
     def payload_for(params)
70 72
       Utils.value_at(params, interpolated['payload_path']) || {}
71 73
     end
74
+
75
+    def response_message
76
+      interpolated['response'] || 'Event Created'
77
+    end
72 78
   end
73 79
 end

+ 14 - 0
spec/models/agents/webhook_agent_spec.rb

@@ -38,6 +38,20 @@ describe Agents::WebhookAgent do
38 38
       expect(out).to eq(['Not Authorized', 401])
39 39
     end
40 40
 
41
+    it 'should respond with customized response message if configured with `response` option' do
42
+      out = nil
43
+      agent.options['response'] = 'That Worked'
44
+      out = agent.receive_web_request({ 'secret' => 'foobar', 'some_key' => payload }, "post", "text/html")
45
+      expect(out).to eq(['That Worked', 201])
46
+    end
47
+
48
+    it 'should respond with `Event Created` if response option is nil' do
49
+      out = nil
50
+      agent.options['response'] = nil
51
+      out = agent.receive_web_request({ 'secret' => 'foobar', 'some_key' => payload }, "post", "text/html")
52
+      expect(out).to eq(['Event Created', 201])
53
+    end
54
+
41 55
     describe "receiving events" do
42 56
 
43 57
       context "default settings" do